package com.xbongbong.paas.service.stage;

import com.xbongbong.paas.domain.entity.StageLogEntity;
import com.xbongbong.paas.toolbox.exception.XbbException;

import java.util.List;
import java.util.Map;

/**
 * 阶段记录操作
 * 策略
 * @author 李少杰
 * @version v1.0.0
 * @date 2021/11/23 13:40
 */
public interface StageLogHandle {

    /**
     * 业务类型
     * @return 业务码
     */
    Integer businessType();

    /**
     * 获取阶段
     * @param stageLogId 阶段记录id
     * @param corpid 公司id
     * @return 阶段记录实体
     * @throws XbbException exception
     */
    StageLogEntity get(Long stageLogId, String corpid) throws XbbException;

    /**
     * 批量删除阶段记录
     * @throws XbbException exception
     */
    Integer deleteBatch(List<StageLogEntity> stageLogEntityList, String corpid) throws XbbException;

    /**
     * 获取符合查询条件的记录总数
     * @param param 查询条件
     * @return 符合查询条件的记录总数
     */
    Integer getEntitysCount(Map<String, Object> param);

    /**
     * 条件查询
     * @param params 查询条件
     * @return 阶段记录实体列表
     */
    List<StageLogEntity> findEntitys(Map<String, Object> params);
    /**
     * description:  更新
     * date: 2021/12/9 7:42 下午
     * @Author yingjf
     */
    void save(StageLogEntity stageLogEntity);

    /**
     * 获取当前的阶段记录
     * @param dataId
     * @param corpid
     * @return
     */
    StageLogEntity getNowStageLog(Long dataId, String corpid, Long formId);

    void insertBatchStageLogList(List<StageLogEntity> stageLogList);

    Integer deleteByStageProcessIdAndDataIdIn(List<Long> dataIdIn, String corpid, Long formId, Long stageProcessId, Long stageId);

    Long getAvgStayTime(String corpid, Long stageProcessId, Long stageId);

    List<Long> findUsedStageProcessId(String corpid, Long formId, List<Long> stageProcessIdIn);

}
